package com.ant.storage.utils;

import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.converters.ReadConverterContext;
import com.alibaba.excel.converters.WriteConverterContext;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.data.WriteCellData;
import org.apache.commons.lang3.StringUtils;

/**
 * excel性别转换器
 * 如果你想实现枚举类型到字符串的转换
 * （比如gender属性中，0->男，1->女），
 * 需要自定义转换器，
 * 自定义的GenderConverter代码实现
 * @author hzd
 * @version 1.0
 * @date 2022/4/8 13:42
 */
public class GenderConverter implements Converter<Integer> {

    @Override
    public  Class<?> supportJavaTypeKey(){
        //对象属性类型
        return  Integer.class;
    }

    @Override
    public CellDataTypeEnum supportExcelTypeKey(){
        //CellData 属性类型
        return CellDataTypeEnum.STRING;
    }

    public  Integer convertToJavaData(ReadConverterContext<?> context) throws  Exception{
        String cellStr=context.getReadCellData().getStringValue();
        if(StringUtils.isEmpty(cellStr)) return  null;
        if("男".equals(cellStr)){
            return 0;
        }else  if("女".equals(cellStr)){
            return 1;
        }else {
            return null;
        }
    }

    public WriteCellData<?> convertToExcelData(WriteConverterContext<Integer>
                                                       context) throws  Exception{
        Integer cellValue=context.getValue();
        if(cellValue==null){
            return new WriteCellData<>("");
        }
        if(cellValue==0){
            return new WriteCellData<>("男");
        }else if(cellValue==1){
            return new WriteCellData<>("女");
        }else {
            return new WriteCellData<>("");
        }
    }
}
